package com.ddxz.middleground.master.mapper;

import com.ddxz.middleground.master.entity.AppEntity;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/7/30
 */

@Mapper
@Repository
public interface ApplicationMapper {
    /**
     * 检索应用信息
     *
     * @param keyword 检索关键字
     * @param status  状态信息 0 全部，1 启用；2 禁用
     * @param tenant  租户信息
     * @return 应用清单
     */
    Page<AppEntity> getAppList(@Param("kw") String keyword, @Param("status") Integer status, @Param("tenant") String tenant);

    /**
     * 查看应用详情
     *
     * @param appId  应用标识
     * @param tenant 租户信息
     * @return 应用信息
     */
    AppEntity getAppDetail(@Param("appId") String appId, @Param("tenant") String tenant);

    /**
     * 指定名称的应用存在的个数
     *
     * @param name   应用名称
     * @param tenant 租户信息
     * @return 应用个数
     */
    Integer getNumByName(@Param("name") String name, @Param("tenant") String tenant);

    /**
     * 指定编码的应用存在个数
     *
     * @param code   应用编码
     * @param tenant 租户信息
     * @return 应用个数
     */
    Integer getNumByCode(@Param("code") String code, @Param("tenant") String tenant);

    /**
     * 将应用信息保存到数据库中
     *
     * @param entity 应用实体
     * @param tenant 租户信息
     * @return 保存成功与否
     */
    Integer saveApp(@Param("entity") AppEntity entity, @Param("tenant") String tenant);

    /**
     * 修改应用信息
     *
     * @param entity 应用实体
     * @param tenant 租户信息
     * @return 修改成功与否
     */
    Integer modifyApp(@Param("entity") AppEntity entity, @Param("tenant") String tenant);

    /**
     * 删除应用信息
     *
     * @param appId  应用标识
     * @param tenant 租户信息
     * @return 是否删除成功
     */
    Integer removeApp(@Param("appId") String appId, @Param("tenant") String tenant);
}
